home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
kcl
/
akcl
/
kcl.lha
/
ustation
/
mktrans
< prev
next >
Wrap
Text File
|
1986-01-17
|
2KB
|
95 lines
#
set htabsiz = 2001
cat /usr1/kcl/h/*.h /usr1/kcl/c/*.c others | extract | sort -u \
| mkhtab ${htabsiz} > trans.c
cat >> trans.c <<EOF
#include <stdio.h>
#include <ctype.h>
#include "hash.c"
char buffer[1024];
main()
{
register c, i, s;
START:
c = getchar();
START1:
if (feof(stdin))
goto EXIT;
if (isalpha(c) || c == '_')
goto IDENTIFIER;
if (c == '\'')
goto CHARACTER;
if (c == '"')
goto STRING;
if (c == '/') {
putchar(c);
if ((c = getchar()) == '*')
goto COMMENT;
goto START1;
}
putchar(c);
goto START;
IDENTIFIER:
for (i = 0; isalnum(c) || c == '_'; c = getchar(), i++)
buffer[i] = c;
buffer[i] = '\0';
if (i < 7) {
printf("%s", buffer);
goto START1;
}
for (s = hash(buffer, ${htabsiz});
htab[s].h_key != NULL;
s = (s+1) % ${htabsiz})
if (strcmp(htab[s].h_key, buffer) == 0) {
printf("%s", htab[s].h_val);
goto START1;
}
printf("%s", buffer);
goto START1;
CHARACTER:
putchar(c);
while ((c = putchar(getchar())) != '\\'')
if (c == '\\\\')
putchar(getchar());
goto START;
STRING:
putchar(c);
while ((c = putchar(getchar())) != '"')
if (c == '\\\\')
putchar(getchar());
goto START;
COMMENT:
putchar(c);
while (putchar(getchar()) != '*' || putchar(getchar()) != '/')
;
goto START;
EXIT:
exit(0);
}
EOF
ed trans.c <<EOF
1,\$g/{"continue"/s/.*/{"continue", "continue"},/p
1,\$g/{"default"/s/.*/{"default", "default"},/p
1,\$g/{"extern"/s/.*/{"extern", "extern"},/p
1,\$g/{"register"/s/.*/{"register", "register"},/p
1,\$g/{"typedef"/s/.*/{"typedef", "typedef"},/p
1,\$g/{"unsigned"/s/.*/{"unsigned", "unsigned"},/p
1,\$g/{"isalpha"/s/.*/{"isalpha", "isalpha"},/p
w
q
EOF
cc -o trans trans.c